/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stud.cp.core.dbaccess;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;

/**
 *
 * @author Morfant
 */
public class JDBC_Connection {

	/**
	 * Логгер.
	 */
	private static Logger logger = Logger.getLogger("ACPII");
	/**
	 * DataSource Oracle.
	 */
	private static DataSource dataSource = null;

	/**
	 * Приватный конструктор.
	 * Паттерн Singleton.
	 */
	private JDBC_Connection() {
	}

	/**
	 * Метод, который получает DataSource у сервера приложений
	 * через jndi имя.
	 * @throws NamingException Ошибка получения чего либо по имени.
	 */
	private static void setDataSource() throws NamingException {
		try{
			Context context = new InitialContext();
			dataSource = (DataSource) context.lookup("jdbc/mssql");}
		catch(NamingException ex){
			logger.debug("Some error occured = ",ex);
			throw ex;
		}
	}

	/**
	 * Метод, позволяющий получить Connecion к базе данных.
	 * @return Connection.
	 */
	public static Connection getConnection() throws SQLException {
		try {
			if (dataSource == null) {
				setDataSource();
			}
		} catch (NamingException ex) {
			throw new SQLException("Exception during lookup DataSource.", ex);
		}
		return dataSource.getConnection();
	}
}
